<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>类</title>
    <script>
        class MyClass{

            constructor() {
                // this.fn = this.fn.bind(this); 将fn方法的this绑定为当前实例
            }
            /*
            *   类中的所有代码都会在严格模式下执行
            *       严格模式下其中一个特点就是，函数的this不在是window，而是undefined
            *
            *   注意：
            *       在类中方法的this不是固定的
            *           以方法形式调用时，this就是当前的实例
            *           以函数形式调用，this是undefined
            *       在开发时，在有些场景下，我们希望方法中的this是固定的，不会因调用方式不同而改变
            *           如果遇到上述需求，可以使用箭头函数来定义类中的方法
            *           如果类中的方法是以箭头函数定义的，则方法中的this恒为当前实例，不会改变
            *
            * */

            // fn(){
            //     console.log('-->',this);
            // }

            fn = () => {
                console.log('-->',this);
            };

        }

        const mc = new MyClass();


        const test = mc.fn;

        mc.fn(); // mc
        test(); // undefined

        const fn2 = function (){
            console.log(this);
        };

        // fn2();


    </script>
</head>
<body>

</body>
</html>
